Currently methods for rendering curves in computer graphics rely on sampling curves into linear segments and then ray-tracing these segments using basic shapes, such as capsules. In this case curves in various representations are accepted and tessellated before rendering, for example using V-ray dynamic curve tessellation and Arnold Render curve sampling.
Recent improvements in optimization libraries, such as “Embree,” are mainly designed for rendering hair. Embree organizes and packs millions of linear segments generated this way for efficient hair strand ray tracing.
Most software which models hair and other thin cylindrical fibers relies on using curves represented as a set of linear segments called polylines. These polylines are either directly passed to the ray-tracer or first converted into a parametric curve representation such as a non-uniform rational basis spline (NURBS) or B-splines and then re-interpolated back into linear segments, which ray-tracers accept. This approach requires large RAM memory to store enough capsule geometries to smoothly represent incoming curves.
Other approaches for ray-tracing curves of hair strands do not require tessellating curves. Instead these other approaches attempt to directly ray-trace curved surfaces by using Newton-based iterative solvers, such as NURBS curve thin primitives rendering and optimizations such as projecting the curve onto a camera-facing plane and calculating distance to a simplified 2d curve, such as “Ray-tracing for curves primitive”. A “Renderman” renderer supports rendering of NURBS and Bezier splines and “Embree” has an option for rendering swept Bezier curves. However, these solutions are slow due to their iterative solving method and additional processing steps.
Working with implicit surfaces is a well-known problem in the field of computer aided design (CAD). CAD aims to solve a problem of representing arbitrary shapes by using a set of formulas describing multiple adjoined surfaces. Canal surfaces are used to represent curves which follow a path Directrix and have a radius function r(t) to represent thickness along the curve length.
Dupin cyclides and tori are quartic surfaces often used to blend between other implicit surfaces to define arbitrary parametric shapes, including canal surfaces.
Torus arcs have also been used as components of a bigger ray-traced curve in ray-tracers such as “POV-Ray”.
However, conventional torus arcs do not allow for variance in radii between its ends, and thus curves are forced to have a constant thickness.
Algorithms exist for converting polylines into a set of line segments and arcs.
However, these algorithms are mainly used for applying vectors in 2d graphics and fitting point data to a parametric representation. Their uses are mostly limited to these domains at this time.
Rendering 3-dimensional smooth cylindrical curves is a big problem in computer graphics in that to synthesize images of hair, fur, feathers, and other fine fibers, etc., a very large data set of cylindrical curve structures must be ray-traced, requiring a large amount of memory. Complications in doing this include: 1) curves are typically represented as a set of connected line segments, but due to the large data volume required (i.e., an average hair can consist of hundreds of millions of segments), it becomes computationally very expensive to generate this data and then provide it to a rendering program; 2) rendering of line segments is typically done by ray-tracing geometric capsule primitives, which produces artifacts in the form of angles between individual segments, making them appear tessellated when viewed up close; and 3) modeling of curves is a hard task to manage for a human because of the complexity within each curves' structure.
Thus there is a need for rendering 3-dimensional cylindrical curves with a low volume of data required to represent the curves and ray-tracing the curves using a set of geometric primitives which have implicit curvature to avoid producing angular artifacts.